#include<iostream>


//单例模式:  在一个工程中一个类只能创建一个对象
//饿汉模式  直接加载(在main函数前),以空间换时间
// class Singlecton
// {
//     private:
//     Singlecton(){   std::cout<<"create sign"<<std::endl;}
//     ~Singlecton(){std::cout<<"destory sign"<<std::endl;}
//     Singlecton(const Singlecton&) =delete;
//     Singlecton operator=(const Singlecton&)=delete;
//         static Singlecton sing;
//     //提供唯一接口,供上层使用
//     public:
//     static Singlecton& GetInstance()
//     {
//         std::cout<<"GetInstance success\n";
//         return sing;
//     }
// };
// Singlecton Singlecton::sing;


//  int main()
//  {
//     Singlecton::GetInstance();
//     Singlecton::GetInstance();
//     Singlecton::GetInstance();
//     Singlecton::GetInstance();
//     Singlecton::GetInstance();
//     Singlecton::GetInstance();

//     return 0;
//  }

//懒汉模式: 延迟加载,需要时才实例化对象,缺点:注意线程安全问题

class Singlecton
{
    private:
        Singlecton(){}
        ~Singlecton(){}
    public:
        Singlecton(const Singlecton&)=delete;
        Singlecton& operator=(const Singlecton&)=delete;

    static Singlecton& GetInstance()
    {
        static Singlecton sing;
        return sing;
    }

};


int main()
{


    return 0;
}